package com.itheima.d07_proxy_quickstart;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * 方法性能分析处理器类：
 *      负责进行方法的功能增强
 */
public class CountTimeInvocationHandler implements InvocationHandler {

    private Object target;

    //给处理器设置被代理对象
    public CountTimeInvocationHandler(Object target) {
        this.target = target;
    }

    /**
     * 代理方法：功能增强
     *
     * 参数一：代理对象本身（一般不用）
     * 参数二：被代理对象方法
     * 参数三：被代理对象方法的参数
     *
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //功能增强：性能统计/日志记录/权限验证/事务管理/数据脱敏/... ...

        long start = System.currentTimeMillis();

        Object result = method.invoke(target, args);//调用被代理对象方法

        long end = System.currentTimeMillis();
        System.out.println(method.getName() + "方法耗时：" + (end - start) +"s");

        return result;
    }
}












